// Copyright(c) Sonosemi Medical Ltd. Embedded Software Team.
// Author: Zhang Yisong(zhangyisong@sonosemi.com)

#pragma once
#include <type_traits>

namespace active {

namespace internal {

template <typename... T>struct Policy {};
template <typename T> struct is_policy : public std::false_type {};

template <typename... T>
struct is_policy<Policy<T...>> : public std::true_type {};

} // namespace internal

namespace concepts {

template <typename T>
concept Policable = internal::is_policy<T>::value;

template <typename T>
concept PolicyConfigurable = internal::is_policy<typename T::Type>::value;
} // namespace concepts

} // namespace active